#include "../StdInc.h"

namespace GSTrader
{
	namespace TradeBase
	{
		CInstrumentLongCode::CInstrumentLongCode()
		{
			m_strInstrumentId = "";
			m_strExchangeId = "";
		}

		CInstrumentLongCode::~CInstrumentLongCode()
		{

		}

		bool CInstrumentLongCode::IsValid()
		{
			return /*!m_strExchangeId.empty() &&*/ !m_strInstrumentId.empty();
		}

		CInstrumentLongCode::CInstrumentLongCode(string strInstrumentId, string strExchangeId)
		{
			m_strInstrumentId = strInstrumentId;
			m_strExchangeId = strExchangeId;
		}

		CInstrumentLongCode::CInstrumentLongCode(string strInstrumentId)
		{
			m_strInstrumentId = strInstrumentId;
			m_strExchangeId = "";
		}

		bool CInstrumentLongCode::operator == (const string& r) const
		{
			return r == (m_strExchangeId + m_strInstrumentId);
		}

		bool CInstrumentLongCode::operator == (const CInstrumentLongCode& r) const
		{
			if (r.m_strInstrumentId.empty() /*|| r.m_strExchangeId.empty()*/)
				return false;

			return r.m_strExchangeId == m_strExchangeId &&
			       r.m_strInstrumentId == m_strInstrumentId;
		}

		CInstrumentLongCode& CInstrumentLongCode::operator = (const CInstrumentLongCode& r)
		{
			m_strInstrumentId = r.m_strInstrumentId;
			m_strExchangeId = r.m_strExchangeId;

			return *this;
		}

		CInstrumentLongCode& CInstrumentLongCode::operator = (const string r)
		{
			m_strInstrumentId = r;
			m_strExchangeId = "";

			return *this;
		}

		string CInstrumentLongCode::GetLongCode()
		{
			return m_strExchangeId + m_strInstrumentId;
		}
	}
}